<template>
  <header class="header">
    <h1>todos</h1>
    <input id="toggle-all" class="toggle-all" type="checkbox" v-model="isAll" />
    <label for="toggle-all"></label>
    <input
      class="new-todo"
      placeholder="输入任务名称-回车确认"
      autofocus
      @keydown.enter="addFn"
      v-model="task"
    />
    <!-- 给input绑定键盘事件,只有按下回车键才能触发 ,先定义一个变量task,然后通过v-model实现双向绑定
    当输入内容时,按下回车就会将输入的内容通过$emit传给父组件,然后父组件将此数据添加到数组中
    -->
  </header>
</template>

<script>
export default {
  props: {
    list: {
      type: Array,
      requeird: true,
    },
  },
  data() {
    return {
      task: '',
    }
  },
  methods: {
    addFn() {
      this.$emit('add', this.task)
      this.task = ''
    },
  },

  // 使用计算属性的完整写法,1.get先获取所有的isDone的值,然后通过v-model来实现双向绑定,如果每一个item的isDone
  // 的值都是true,那么全选的状态也是true,反之,为false
  // 2.如果修改全选按钮的状态,那么就会set方法,forEach遍历数组,然后将value赋值给每一项item的isDone
  // 从而实现全选
  computed: {
    isAll: {
      get() {
        console.log('get触发了')
        return this.list.every((item) => item.isDone)
      },
      set(value) {
        console.log('set触发了')
        return this.list.forEach((item) => (item.isDone = value))
      },
    },
  },
}
</script>
